home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / jcool01.zip / TEST_RAT.C < prev    next >
C/C++ Source or Header  |  1992-08-11  |  4KB  |  96 lines

  1. //
  2. // Copyright (C) 1991 Texas Instruments Incorporated.
  3. //
  4. // Permission is granted to any individual or institution to use, copy, modify,
  5. // and distribute this software, provided that this complete copyright and
  6. // permission notice is maintained, intact, in all copies and supporting
  7. // documentation.
  8. //
  9. // Texas Instruments Incorporated provides this software "as is" without
  10. // express or implied warranty.
  11. //
  12.  
  13. #include <cool/Rational.h>
  14. #include <test.h>
  15.  
  16. void test_rational() {
  17.   CoolRational r1;
  18.   TEST ("CoolRational r1", r1.status(), N_OK);
  19.   CoolRational r2(3,5);
  20.   TEST ("CoolRational r2(3,5)", r2.status(), N_OK);
  21.   TEST ("r2.numerator()", r2.numerator(), 3);
  22.   TEST ("r2.denominator()", r2.denominator(), 5);
  23.   TEST ("r1 != r2", r1 != r2, TRUE);
  24.   CoolRational r3(9);
  25.   TEST ("CoolRational r3(9)", r3.status(), N_OK);
  26.   TEST ("r3.numerator()", r3.numerator(), 9);
  27.   TEST ("r3.denominator()", r3.denominator(), 1);
  28.   CoolRational r4(6,10);
  29.   TEST ("CoolRational r4(6,10)", r4.status(), N_OK);
  30.   TEST ("r4.numerator()", r4.numerator(), 3);
  31.   TEST ("r4.denominator()", r4.denominator(), 5);
  32.   TEST ("r2 == r4", r2 == r4, TRUE);
  33.   TEST ("r1 = r2", (r1 = r2, r1 == r2), TRUE);
  34.   TEST ("r1.status()", r1.status(), N_OK);
  35.   TEST ("r1.numerator()", r1.numerator(), 3);
  36.   TEST ("r1.denominator()", r1.denominator(), 5);
  37.   TEST ("r1 == r4", r1 == r4, TRUE);
  38.   TEST ("-r3",(r1 = -r3,(r1.numerator() == -9 && r1.denominator() == 1)),TRUE);
  39.   CoolRational r5(r1);
  40.   TEST ("CoolRational r5(r1)", r5 == r1, TRUE);
  41.   TEST ("!r5", !r5, FALSE);
  42.   TEST ("r3=r1+r2",(r3=r1+r2,r3.numerator()==-42 && r3.denominator()==5),TRUE);
  43.   TEST ("r1+=r2", (r1+=r2, r1 == r3), TRUE);
  44.   TEST ("r3.invert()",(r3.invert(),r3.numerator()==-5&& r3.denominator()==42),TRUE);
  45.   TEST ("r5=r1+r3",(r5=r1+r3, r5.numerator()==-1789 && r5.denominator()==210), TRUE);
  46.   TEST ("r1+=r3",(r1+=r3, r1 == r5), TRUE);
  47.   TEST ("r4 = r1", (r4 = r1, r4 == r1), TRUE);
  48.   TEST ("r5=r2-(r3.invert())", (r5=r2-(r3.invert()), r5.numerator()==9 && r5.denominator()==1),TRUE);
  49.   TEST ("r2-=r3", (r2-=r3, r2 == r5), TRUE);
  50.   TEST ("short (r1)", short(r1), -8);
  51.   TEST ("int (r1)", int(r1), -8);
  52.   TEST ("long (r1)", long(r1), -8);
  53.   TEST ("float (r1)", (float(r1) < -8.51904 && float(r1) > -8.51906), TRUE);
  54.   TEST ("double (r1)", (double(r1) < -8.51904 && double(r1) > -8.51906), TRUE);
  55.   TEST ("r1.floor()", r1.floor(), -9);
  56.   TEST ("r1.ceiling()", r1.ceiling(), -8);
  57.   TEST ("r1.truncate()", r1.truncate(), -8);
  58.   TEST ("r1.round()", r1.round(), -9);
  59.   TEST ("r1 *= -1", (r1 *= CoolRational(-1), r1 == -r4), TRUE);
  60.   TEST ("r1.floor()", r1.floor(), 8);
  61.   TEST ("r1.ceiling()", r1.ceiling(), 9);
  62.   TEST ("r1.truncate()", r1.truncate(), 8);
  63.   TEST ("r1.round()", r1.round(), 9);
  64.   TEST ("r4 < r1", r4 < r1, TRUE);
  65.   TEST ("r4 <= r1", r4 <= r1, TRUE);
  66.   TEST ("r4 <= r4", r4 <= r4, TRUE);
  67.   TEST ("r1 > r4", r1 > r4, TRUE);
  68.   TEST ("r1 >= r4", r1 >= r4, TRUE);
  69.   TEST ("r1 >= r1", r1 <= r1, TRUE);
  70.   TEST ("r2++", (r2++, r2.numerator() == 10 && r2.denominator() == 1), TRUE);
  71.   TEST ("r2--", (r2--, r2 == r5), TRUE);
  72.   TEST ("r1=r2", (r1=r2, r1.numerator() == 9 && r1.denominator() == 1), TRUE);
  73.   TEST ("r4=r2*r3",(r4=r2*r3,r4.numerator()==-378 &&r4.denominator()==5),TRUE);
  74.   TEST ("r2*=r3", (r2*=r3, r2 == r4), TRUE);
  75.   TEST ("r2/r3", r2 / r3, r1);
  76.   TEST ("r2/=r3", (r2/=r3, r2 == r1), TRUE);
  77.   TEST ("r4%(r2/r3)", (r5=r4%(r2/r3), r5.numerator()==-3 && r5.denominator()==5), TRUE);
  78.   TEST ("r4%=(r2/r3)", (r4%=(r2/r3), r4 == r5), TRUE);
  79. }
  80.  
  81. void test_leak () {
  82.   for (;;) {
  83.     test_rational();
  84.   }
  85. }
  86.  
  87. int main (void) {
  88.   START("CoolRational");
  89.   test_rational();
  90. #if LEAK
  91.   test_leak();
  92. #endif
  93.   SUMMARY();
  94.   return 0;
  95. }
  96.